﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Aeroporto.bd;
using System.Data;
using System.Collections;
using System.Windows.Forms;

namespace Aeroporto.controle
{
    class CompanhiaControl
    {
        private CompanhiaDAO bd_companhia = new CompanhiaDAO();

        public DataTable lista_dados(string tabela)
        {
            DataTable datatable = new DataTable();
            try
            {
                datatable = bd_companhia.lista_dados(tabela);
            }
            catch(Exception e){
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public DataTable pesquisar_nome(string nome)
        {
            DataTable datatable = new DataTable();
            try
            {
                datatable = bd_companhia.pesquisar("companhia","nome",nome);
            }
            catch(Exception e){
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public MyMessageBox valida_companhia(string te_sigla, string te_nome, string te_nome_fantasia, string te_pais, string te_senha)
        {
            if (te_sigla == "" || te_nome == "" || te_nome_fantasia == "" || te_pais == "" || te_senha == "")
            {
                return new MyMessageBox("Preencha todos os campos", "Campo em branco");
            }
            else
            {
                if (bd_companhia.existe_registro("companhia", "sigla", te_sigla) == true)
                {
                    return new MyMessageBox("Registro já existe", "Companhia já existente");
                }
                else
                {
                    return null;
                }
            }
        }

        public MyMessageBox valida_insert_companhia(string te_sigla,string te_nome,string te_nome_fantasia,string te_pais,string te_senha)
        {
            MyMessageBox mb = valida_companhia(te_sigla,te_nome,te_nome_fantasia,te_pais,te_senha);

            if (mb != null)
            {
                return mb;
            }
            else
            {
                string sigla = te_sigla;
                string nome = te_nome;
                string nome_fantasia = te_nome_fantasia;
                string pais = te_pais;
                string senha = te_senha;

                IGenericModel generic_model = new CompanhiaModel(sigla,nome,nome_fantasia,pais,senha);

                if (bd_companhia.gravar_dados(generic_model))
                {
                    mb = new MyMessageBox("Companhia cadastrada!", "Cadastrado");
                }
                else
                {
                    mb = new MyMessageBox("Erro no cadastro!","Erro");
                }
                return mb;
            }
        }

        public MyMessageBox exclui_companhia(ArrayList siglas)
        {
            return bd_companhia.excluir("companhia","sigla",siglas);
        }

        public MyMessageBox valida_update_companhia(string te_sigla,string te_nome,string te_nome_fantasia,string te_pais,string te_senha,string te_sigla_antiga)
        {
            if (te_sigla == "" || te_nome == "" || te_nome_fantasia == "" || te_pais == "" || te_senha == "")
            {
                return new MyMessageBox("Preencha todos os campos", "Campo não preenchido");
            }
            else
            {
                if(te_sigla_antiga != te_sigla)
                {
                    return new MyMessageBox("A sigla não pode ser alterada","Erro");
                }

                CompanhiaModel companhia = new CompanhiaModel(te_sigla,te_nome,te_nome_fantasia,te_pais,te_senha);

                if (bd_companhia.update_dados(companhia))
                {
                    return new MyMessageBox("Companhia atualizada!", "Companhia");
                }
                else
                {
                    return new MyMessageBox("Erro ao atualizar","Erro");
                }
            }
        }
    }
}
